package com.qlk.odcinterface.manager;

import java.util.List;

import com.qlk.odcinterface.domain.PmsCoupon;
import com.qlk.odcinterface.domain.PmsCouponChannel;
import com.qlk.odcinterface.domain.PmsCouponItem;
import com.qlk.odcinterface.domain.query.PmsCouponQuery;
import com.qlk.common.utils.page.PageUtil;
/**
 * PmsCouponManager接口
 * 
 * @author zhaoyanan
 * @version 2016-4-14 14:11:36
 * 
 */
public interface PmsCouponManager {

    /**
     * 批量增加对象信息
     * 
     * @param pmsCouponList
     * @return
     */
    public boolean insert(List<PmsCoupon> pmsCouponList);

    /**
     * 单个增加对象信息
     * 
     * @param pmsCoupon
     * @return
     */
    public boolean insert(PmsCoupon pmsCoupon);

    /**
     * 更新 对象信息
     * 
     * @param pmsCoupon
     *            对象信息对象
     * @return false：失败 true：成功
     */
    public boolean update(PmsCoupon pmsCoupon);

    /**
     * 根据查询Bean获取对象集合，无翻页
     * 
     * @param queryBean
     * @return
     */
    public List<PmsCoupon> queryPmsCouponList(PmsCouponQuery queryBean);

    /**
     * 根据查询Bean获取对象集合，带翻页
     * 
     * @param queryBean
     * @param pageUtil
     * @return
     */
    public List<PmsCoupon> queryPmsCouponListWithPage(PmsCouponQuery queryBean,
                                                      PageUtil pageUtil);

    /**
     * 根据查询Bean获取对象信息总数
     * 
     * @param queryBean
     *            对象信息查询对象
     * @return 对象信息总数
     */
    public int queryPmsCouponCount(PmsCouponQuery queryBean);

    /**
     * 根据主键删除对象信息，该处做的是逻辑删除
     * 
     * @param pmsCoupon
     *            　
     * @return
     */
    public boolean delete(PmsCoupon pmsCoupon);

    /**
     * 根据主键获取对象信息
     * 
     * @param id
     *            主键字段
     * @return 对象信息
     */
    public PmsCoupon getPmsCouponById(Long id);

    /**
     * 根据主键集合批量删除对象信息，该处做的是逻辑删除
     * 
     * @param pmsCoupons
     *            PmsCoupon集合
     * @return
     */
    public boolean delete(PmsCoupon[] pmsCoupons);

    /**
     * 判断是否存在
     * 
     * @param pmsCoupon
     * @return
     */
    public boolean exist(PmsCoupon pmsCoupon);
    
    /**
     * 插入优惠券、优惠券明细、优惠券渠道信息
     * @param items 优惠券明细信息
     * @param pmsCoupon 优惠券信息
     * @param channels 优惠券渠道信息
     * @return
     */
    public boolean insertPmsCoupon(List<PmsCouponItem> items, PmsCoupon pmsCoupon,List<PmsCouponChannel> channels);
    
    /**
     * 更新 odc中已存在 的 优惠券、优惠券明细、优惠券渠道信息
     * @param items
     * @param pmsCoupon 需更新的优惠券信息
     * @param oldCoupon 已存在的odc优惠券信息
     * @param channels
     * @return
     */
    public boolean updatePmsCoupon(List<PmsCouponItem> items, PmsCoupon pmsCoupon,List<PmsCouponChannel> channels,PmsCoupon oldCoupon);
   
    /**
     * 更新优惠券状态
     * @param pmsCoupon
     * @return
     */
    public boolean updatePmsCouponStatus(PmsCoupon pmsCoupon);
    
    /**
     * 更新 删除时间
     * @param pmsCoupon
     * @return
     */
    public boolean updateDeleteAt(PmsCoupon pmsCoupon);
}
